<html>
<body>
<pre>
= BIL: Basic Imperative Language =

BIL is a programming language supporting basic imperative operations and control structures.  BIL comes with a parser, an interpreter, a compiler, and a virtual machine to run compiled code.  This project is an exercise, and not intended for any sort of real world use;  many of its features and design decisions were made with the priority of making something different, not necessarily easy to use or functional.


== Requirements ==

To interpret or compile and run BIL programs from distribution JAR files, the
following utilities are required:

 * Sun JDK 1.6
 * SpiderMonkey 1.7.0 (JavaScript-C 1.7.0 2007-10-03)
	
To build and test BIL itself, the following utilities are required in addition
to those mentioned above:

 * GNU bash 3.2.48(1)-release
 * GNU Make 3.81
 * GNU sed 4.1.5
 * GNU diffutils 2.8.1
 * tput (ncurses 5.7.20081102)
 * Subversion 1.5.4 (r33841)
 * A Linux/UNIX build environment
 * A working Internet connection
	
To view BIL's documentation, a web browser is required.


== Usage ==

If you are missing the appropriate JAR file(s), either build them following
the steps detailed in "Installation," or download them from http://code.google.com/p/bil/

To use BIL's Parser to generate a parse tree, use the following command:
{{{
	java -jar bil-parser.jar
	[enter your BIL source code]
	[Ctrl+d to stop input and generate parse tree]
}}}
	
To use BIL's Interpreter to interpret BIL code, use the following command:
{{{
	java -jar bil-interpreter.jar source-file.bil
}}}
	
To use BIL's Compiler to compile BIL code, use the following command:
{{{
	java -jar bil-compiler.jar source-file.bil > output.bilvm
}}}
	
To interpret compiled BIL code with BIL's VM, use the following commands:
{{{
	jar xf bil-compiler.jar
	js vm/VM.js output.bilvm
}}}


== Installation ==

If not already available, distribution JAR files must be generated.  To do so,
perform the following steps.

 # Checkout the BIL source code from its Subversion repository with the following command:
 {{{
 svn checkout http://bil.googlecode.com/svn/trunk/ bil
 }}}
 # Build the BIL parser, interpreter, compiler, and JAR files:
 {{{
 cd bil
 make dist
 }}}
 # Change to the src directory, and use as specified in "Usage."
 {{{
 cd src
 java -jar ...
 }}}


== Testing ==

To run BIL's automated tests, follow these steps.

 # Checkout the BIL source code from its Subversion repository with the following command:
 {{{
 svn checkout http://bil.googlecode.com/svn/trunk/ bil
 cd bil
 make test
 }}}


== Additional Documentation ==

For information on programming in BIL, see the LanguageReference at http://code.google.com/p/bil/wiki/LanguageReference.

Bundled with any BIL JAR file is detailed documentation.  This documentation is located within the doc/ directory within the JAR file.  To access this documentation, use the commands:

{{{
	jar xf bil-X.jar	# Where X is parser, interpreter, or compiler
	# Open doc/index.html in your favorite web browser
}}}


== Contact Information ==

The author of BIL, Vic Fryzel, can be reached by email at vef3240@rit.edu.
</pre>
</body>
</html>
